import 'dart:math';

class HcNumberUtil {
  const HcNumberUtil._();

  ///将角度转换成弧度
  ///[degree] 角度
  static double degree2radians(double degree) {
    return degree * (pi / 180);
  }

  ///弧度转成角度
  ///[radians] 弧度
  static double radians2degree(double radians) {
    return radians * (180 / pi);
  }

  ///简易解决计算精度问题 避免出现0.2+0.1=0.300000000004的情况
  ///[number] 数字
  static double formatNumber(num number) {
    return double.parse(number.toStringAsFixed(2));
  }

  ///格式化数字 如果小数后面为0则不显示小数点
  ///[num]要格式化的数字 double 类型
  /// [position] 保留几位小数 int类型
  static String formatNum({required double num, required int position}) {
    String numStr = num.toString();
    int dotIndex = numStr.indexOf(".");

    ///当前数字有小数且需要小数位数小于需要的 直接返回当前数字
    if (num % 1 != 0 && (numStr.length - 1 - dotIndex < position)) {
      return numStr;
    }
    int numbs = pow(10, position).toInt();
    //模运算 取余数
    double remainder = num * numbs % numbs;
    //小数点后位数如果小于0则表示只保留整数,余数小于1不会进位防止出现200.01保留一位小数出现200.0的情况
    if (position > 0 && remainder > 0.5) {
      return num.toStringAsFixed(position);
    }
    return num.toStringAsFixed(0);
  }
}
